Date: Tue, 14 Jan 1997 23:18:52 GMT
Server: NCSA/1.5
Content-type: text/html

<HTML>
<HEAD>
<TITLE> Arthur C. Fleck home page</TITLE>
</HEAD>
<HR>
<H1><!WA0><IMG align=middle SRC="http://www.cs.uiowa.edu/~fleck/photo.gif" ALT="photo of ACF :-)">
Art Fleck <br>
<!WA1><a href="http://www.cs.uiowa.edu/~fleck/greeting.aiff">voice greeting(aiff, 58k)</a> </H1>
<HR>
<H2>Arthur C. Fleck <br>Professor <br>Department of Computer Science </H2>
<ADDRESS>
201D MacLean Hall<BR>
University of Iowa<BR>
Iowa City, Iowa 52242<P>
phone : 319/335-0718<BR>
e-mail: fleck@cs.uiowa.edu<BR>
fax: 319/335-3624
</ADDRESS>
<HR>
<H2> Technical Interests </H2>
I first encountered computers in 1957 as a student, 
programming on the IBM 650 (the computer to which Don Knuth dedicates 
his series The Art of Computer Programming).  At that time 
my academic major was in mathematics, and it was fortunate to find one 
or two courses on computing at most universities.  I went on to do graduate 
work in mathematics, but continued to seriously pursue computing through a 
research assistantship in a lab where a copy of ILLIAC-I had just been
constructed.  This fostered a shared interest in both 
theory and practice of computing that has continued throughout my career.
<p>
My initial research efforts were in algebraic automata theory and formal 
languages.  These areas investigate highly abstract models of computing 
devices and languages, and apply them to examine the ultimate limits of 
language processing by mechanical devices.  I still find this body of 
theoretical material helps to provide much better insight into many 
practical aspects of computing, and I am currently working on a textbook in 
this area.
<p>
My current area of research interest is foundations of programming and 
programming languages.  This includes the formal syntax and semantics of 
programming languages, methodology for construction of correct programs, 
and methods for formal verification of program correctness.  The methodology 
for construction of correct programs embraces means of specifying the behavior 
of programs at a level abstract enough to avoid particulars such as algorithm 
and data structure selection (e.g., abstract data types), plus transformation 
techniques for evolving more efficient programs from prototypes known to be 
correct.  Recently attention has been focused on declarative programming 
languages (i.e., logic and functional paradigms) that facilitate developing 
prototypes directly from formal specifications, and which then admit general 
transformation techniques.  
<h2> Further information </h2>
<ul>
<li> <!WA2><a href="http://www.cs.uiowa.edu/~fleck/biodata.html"> A. C. Fleck biographical data </a>
<li> <!WA3><a href="http://www.cs.uiowa.edu/~fleck/publist.html"> A. C. Fleck publication citations </a>
<li> <!WA4><a href="http://www.cs.uiowa.edu/~fleck/burma.html"> Burma-Shave roadway signs </a>
<li> <!WA5><a href="http://www.cs.uiowa.edu/"> Department of Computer Science. </a>
</ul>
</HTML>
